/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package dao;

import javax.swing.ComboBoxModel;
import javax.swing.JComboBox;
import java.sql.ResultSet;
import model.KeyValue;

/**
 * define um model de chave+valor para comboboxes que utilizam ResultSets
 * como dados de itens.
 *
 * @author Marcel Vinicius Kohls
 * 18 mai 2011
 */
public class ResultSetComboBox {

    private ResultSet paramSqlResult;
    private String colunaExibicao;
    private String colunaReferencia;

    /**
     * contructor ResultsetComboBox
     * Recebe os parametros do ResultQuery desejado, da colina para exibicao no combo, e a coluna de referencia quando for solicitado seu valor
     * @param pSqlResult
     * @param pColExibicao
     * @param pColReferencia
     */
    public ResultSetComboBox(ResultSet pSqlResult, String pColExibicao, String pColReferencia) {
        paramSqlResult      = pSqlResult;
        colunaExibicao      = pColExibicao;
        colunaReferencia    = pColReferencia;
    }

    /**
     * retorna no formato modelo de combo os valores do Query
     * @return
     */
    public ComboBoxModel getModel() {
        JComboBox resultCombo = new JComboBox();

        try{
            //verifica todos os registros do resultquery
            while (paramSqlResult.next()) {
                // coloca cada novo registro em formato KeyValue
                resultCombo.addItem(new KeyValue(paramSqlResult.getObject(colunaExibicao).toString(), paramSqlResult.getObject(colunaReferencia).toString()));
            }
        } catch (Exception e) {
            System.out.println("erro: ResultSetComboBox.getModel: "+e.getMessage());
        }

        return resultCombo.getModel();
    }
}
